import { autoUpdater } from 'electron-updater'
import { ipcMain } from "electron";

// 检测更新，在你想要检查更新的时候执行，renderer事件触发后的操作自行编写
 export function updateHandle(mainWindow:any) {
	const message = {
		error: '检查更新出错',
		checking: '正在检查更新……',
		updateAva: '检测到新版本，正在下载……',
		updateNotAva: '现在使用的就是最新版本，不用更新',
	};
	const uploadUrl = "http://192.168.1.11:8080/download/"; // 下载地址，不加后面的**.exe
	autoUpdater.setFeedURL(uploadUrl);

	autoUpdater.on('error', function (error) {
		sendUpdateMessage(message.error + '。错误信息：' + error);
	});

	autoUpdater.on('checking-for-update', function () {
		sendUpdateMessage(message.checking)
	});

	autoUpdater.on('update-available', function (info) {
		sendUpdateMessage(message.updateAva)
	});

	autoUpdater.on('update-not-available', function (info) {
		sendUpdateMessage(message.updateNotAva)
	});

	// 更新下载进度事件
	autoUpdater.on('download-progress', function (progressObj) {
		mainWindow.webContents.send('downloadProgress', progressObj)
	})

	 // 更新下载完毕
	autoUpdater.on('update-downloaded', function (event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) {
		sendUpdateMessage('触发主线程update-downloaded')
		ipcMain.on('isUpdateNow', (e, arg) => {
			// console.log(arguments);
			console.log("开始更新");
			//some code here to handle event
			autoUpdater.quitAndInstall();
		});

		mainWindow.webContents.send('isUpdateNow')
	});

	ipcMain.on("checkForUpdate", () => {
		//执行自动更新检查
		autoUpdater.checkForUpdates();
	})

	 // 通过main进程发送事件给renderer进程，提示更新信息
	 function sendUpdateMessage(text: string) {
		 mainWindow.webContents.send('message', text)
	 }

 }
